#region Usings

using System;
using System.IO;
using NUnit.Framework;
using Karma.Framework.Core.Domain.Tools.Import.Layout;
using Karma.Framework.Core.Test.Domain.Tools.Importador.Entidades;

#endregion

namespace Karma.Framework.Core.Test.Domain.Tools.Importador
{
    [TestFixture]
    public class GeneradorArchivoLayoutFixture
    {
        //[Test]
        //public void GeneraArchivoLayoutPolizaAutoIndividualTest()
        //{
        //    var factory = new DefaultLayoutFactory();
        //    var layout = factory.Create<PolizaAutoIndividual>(new LayoutFactoryConfig(), new Type[] { });

        //    var archivoBuilder = new ExcelLayoutFileBuilder();

        //    using (var ms = new FileStream(typeof(PolizaAutoIndividual).Name + ".xlsx",
        //        FileMode.Create, FileAccess.ReadWrite))
        //    {
        //        archivoBuilder.BuildFile(layout, ms);
        //    }
        //}

        [Test]
        public void GeneraArchivoLayoutEntidadConAgregadoTest()
        {
            var factory = new DefaultLayoutFactory();
            var layout = factory.Create<EntidadConAsociadosYAgregados>(new LayoutFactoryConfig(), new Type[] {});

            var archivoBuilder = new ExcelLayoutFileBuilder();

            using (var ms = new FileStream(typeof(EntidadConAsociadosYAgregados).Name + ".xlsx",
                FileMode.Create, FileAccess.ReadWrite))
            {
                archivoBuilder.BuildFile(layout, ms);
            }
        }

        [Test]
        public void GeneraArchivoLayoutEntidadConAsociadosIdRefTest()
        {
            var factory = new DefaultLayoutFactory();
            var layout = factory.Create<EntidadConAsociadosConIdRef>(new LayoutFactoryConfig(), new Type[] {});

            var archivoBuilder = new ExcelLayoutFileBuilder();
            using (var ms = new FileStream(typeof(EntidadConAsociadosConIdRef).Name + ".xlsx",
                FileMode.Create, FileAccess.ReadWrite))
            {
                archivoBuilder.BuildFile(layout, ms);
            }
        }

        [Test]
        public void GeneraArchivoLayoutEntidadConAsociadosTest()
        {
            var factory = new DefaultLayoutFactory();
            var layout = factory.Create<EntidadConAsociados>(new LayoutFactoryConfig(), new Type[] {});

            var archivoBuilder = new ExcelLayoutFileBuilder();
            using (var ms = new FileStream(typeof(EntidadConAsociados).Name + ".xlsx", 
                FileMode.Create, FileAccess.ReadWrite))
            //using (var ms = new MemoryStream())
            {
                archivoBuilder.BuildFile(layout, ms);
            }
        }

        [Test]
        public void GeneraArchivoLayoutEntidadSimpleTest()
        {
            var factory = new DefaultLayoutFactory();
            var layout = factory.Create<EntidadSimple>(new LayoutFactoryConfig(), new Type[] {});

            var archivoBuilder = new ExcelLayoutFileBuilder();
            using (var ms = new FileStream(typeof(EntidadSimple).Name + ".xlsx",
                FileMode.Create, FileAccess.ReadWrite))
            {
                archivoBuilder.BuildFile(layout, ms);
            }
        }
    }
}